Introducciòn a trigger los triggers o disparadores, son procedimientos automaticos que se activan despues de una accion, esta accion puede ser un insert, delete o update se trabaja con dos identificadores que son after (despues de) before (antes de) dentro de las condiciones que tienen los triggers esta que no pueden existir dos o mas after para el insert o para el delete o para el update el after es el caso mas comun de los triggers, se activa despues de una sentencia y afecta solo tablas distintas a la que lo esta invocando, situacion que no sucede con el before que solo afecta la tabla que lo invoca la sintaxis general es delimiter // create trigger nombre after (insert, delete, update) on tabla for each row //recorre fila por fila (arreglos o matrices) begin sentencia end // delimiter ; ejemplo delimiter // create trigger valorventa after insert on articulo for each row begin update detalle set valorventa = (select valorunitario + (valorunitario * 0.23) from articulo where articulo.codigo = detalle.codigo); end // delimiter ; &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& delimiter // create trigger actualizar_existenciap after insert on detalle for each row begin update articulo set existencia = cantidad - (select sum(cantidad) from detalle where detalle.codigo = articulo.codigo); end // delimiter ; &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& mysql> show triggers; &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& delimiter // create trigger valortotal before insert on detalle for each row begin update detalle set total = cantidad * valorventa; end // delimiter ; &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& mysql> create table copia_articulo like articulo; Query OK, 0 rows affected (0.21 sec) mysql> show tables; +------------------------+ | Tables_in_subconsultas | +------------------------+ | articulo | | copia_articulo | | copia_nuevos | | detalle | +------------------------+ 4 rows in set (0.00 sec) mysql> insert into copia_articulo select * from articulo; Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> show tables; +------------------------+ | Tables_in_subconsultas | +------------------------+ | articulo | | copia_articulo | | copia_nuevos | | detalle | +------------------------+ 4 rows in set (0.00 sec) mysql> select * from copia_articulo; +--------+------------+----------+---------------+------------+ | codigo | articulo | cantidad | valorunitario | existencia | +--------+------------+----------+---------------+------------+ | 150 | nevera | 25 | 950000 | 0 | | 200 | televisor | 11 | 1200000 | 0 | | 250 | estufa | 30 | 750000 | 0 | | 300 | ventilador | 17 | 110000 | 0 | | 350 | lavadora | 13 | 980000 | 0 | +--------+------------+----------+---------------+------------+ 5 rows in set (0.00 sec) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Cree una tabla que le permita guardar una copia_nuevos relación de los nuevos productos ingresados en copia_articulo al inventario.(Trigger) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& d) Cree un procedimiento almacentado que le permita ingresar un nuevo producto (Al ingresar el nuevo producto se debe disparar el trigger y hacer la copia anteriormente solicitada)